class Solution:
def openLock(self, deadends: List[str], target: str) -> int:
another_deadend = {}
for i in deadends:
another_deadend[i] = 1
queue = []
visited = {}
queue.append(["0000", 0])
visited["0000"] = True
ans = float("inf")
while len(queue) !=0:
k = queue.pop(0)
if k[0] in another_deadend:
continue
if k[0] == target:
ans = min(ans, k[1])
break
for i in range(4):
str1 = k[0][:i] + str((int(k[0][i]) + 1)%10) + k[0][i+1:]
str2 = k[0][:i] + str((int(k[0][i]) - 1)%10) + k[0][i+1:]
if str1 not in visited:
visited[str1] = True
queue.append([str1, k[1] + 1])
if str2 not in visited:
visited[str2] = True
queue.append([str2, k[1] + 1])
if ans == float("inf"):
return -1
return ans
821. Shortest Distance to a Character | 1441. Build an Array With Stack Operations |
1356. Sort Integers by The Number of 1 Bits | 922. Sort Array By Parity II |
344. Reverse String | 1047. Remove All Adjacent Duplicates In String |
977. Squares of a Sorted Array | 852. Peak Index in a Mountain Array |
461. Hamming Distance | 1748. Sum of Unique Elements |
897. Increasing Order Search Tree | 905. Sort Array By Parity |
1351. Count Negative Numbers in a Sorted Matrix | 617. Merge Two Binary Trees |
1450. Number of Students Doing Homework at a Given Time | 700. Search in a Binary Search Tree |
590. N-ary Tree Postorder Traversal | 589. N-ary Tree Preorder Traversal |
1299. Replace Elements with Greatest Element on Right Side | 1768. Merge Strings Alternately |
561. Array Partition I | 1374. Generate a String With Characters That Have Odd Counts |
1822. Sign of the Product of an Array | 1464. Maximum Product of Two Elements in an Array |
1323. Maximum 69 Number | 832. Flipping an Image |
1295. Find Numbers with Even Number of Digits | 1704. Determine if String Halves Are Alike |
1732. Find the Highest Altitude | 709. To Lower Case |